Faktorizacija broja na proste činioce

Faktorizacija broja vrši se uzastopnim deljenjem prostim brojevima sve dok deljenik ne postane 1. Kako deljenje polazi od manjih faktora ka većim dovoljno je iterirati kroz neparne brojeve kao moguće kandidate, jer u slučaju provere deljivosti sa nekim od složenih neparnih brojeva činioci tog neparnog složenog broja su već obrađeni pa tekući deljenik sigurno neće biti deljiv njime.

In [1]:
from math import sqrt

def factorize(n):
    if n <= 3:
        return [n]
    
    factors = []
    
    while n % 2 == 0:
        factors.append(2)
        n = n // 2
        
    i = 3
    while n > 1:
        if n % i == 0:
            factors.append(i)
            n = n // i
        else:
            i = i + 2
            
    return factors
In [2]:
factorize(3244)
Out[2]:
[2, 2, 811]